package com.dd.cloud.common.constants;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

public class TencentConstants {


    /**
     * 消息类型
     */
    public interface ImMsgType {
        // 文本
        int TEXT = 1;
        // 图片
        int IMG = 2;
        //语音
        int SOUND = 3;
        // 视频
        int VIDEO = 4;
        //文件
        int FILE = 5;
        //自定义消息
        int CUSTOM = 6;
        //表情
        int FACE = 7;
    }

    /**
     * 消息状态
     */
    public interface ImMsgStatus {
        // 发送成功未读
        int SEND = 1;
        // 已读
        int READ = 2;
        //发送失败
        int FAIL = -1;
        // 撤回
        int RECALL = 0;


    }

    /**
     * 自定义系统消息
     */
    @Getter
    @NoArgsConstructor
    @AllArgsConstructor
    public enum ImMsgCustom {

        //患者已填写症状
        ASYMPTOM("server_1", "已提交症状单"),

        //医生邀请患者填写症状
        FSYMPTOM("server_2", "已邀请患者填写症状（疾病：%s）"),

        //患者已成功支付订单
        PAYSUCC("server_3", "患者已成功支付订单"),

        //订单超时
        ORDERTIMEOUT("server_4", "处方单已超时，重新生成订单"),

        //问诊咨询结束,提示评价
        CONSULTOVER("server_5", "问诊已结束，快去点评一下本次的问诊吧！"),

        //问诊评价结束
        EVALUATE("server_6", "感谢您的评价！"),

        //问诊开始
        BEGIN("server_7", "已问诊已开始本次问诊可持续 24 小时"),

        //您已结束问诊 ，感谢您的回复
        DOCTOR_END_1("server_8", "您已结束问诊 ，感谢您的回复"),

        //您已结束图文咨询，感谢您的回复
        DOCTOR_END_2("server_8", "您已结束图文咨询，感谢您的回复"),

        //患者已成功支付订单
        PATIENT_PAY_PRES("server_9", "患者已成功支付订单"),

        //处方订单已超时，暂不支持重新支付
        PATIENT_PAY_PRES_TIMEOUT_1("server_10", "处方订单已超时，暂不支持重新支付"),

        //处方订单已超时，重新生成订单
        PATIENT_PAY_PRES_TIMEOUT_2("server_11", "处方订单已取消，可重新生成订单"),

        //您已结束问诊，快去填写病历吧
        DOCTOR_END_MEDICAL("server_12", "您已结束问诊，快去填写病历吧");


        /**
         * 消息类型
         */
        private String type;

        /**
         * 消息内容
         */
        private String msg;
    }

    /**
     * 转换枚举信息,
     */
    @Data
    @Accessors(chain = true)
    public static class ImMsgPojo {
        public String type;
        public String msg;
        public String extend;

        public ImMsgPojo imMsgSet(ImMsgCustom imMsgCustom, String... param) {
            this.type = imMsgCustom.getType();
            this.msg = imMsgCustom.getMsg();
            if (param != null) {
                for (String p : param) {
                    msg = String.format(msg, p);
                }
            }
            return this;
        }
    }
}
